File Systems

  • They change how data is stored, not how users interact with it.

    • From a user's perspective, all of these expose essentially the same abstraction.

    • "Why are my files scattered everywhere?", "Why do applications create arbitrary folders?"

      • that's usually determined by:

        • the operating system

        • application conventions

        • desktop environment

        • package manager

        • standards like the FHS

      • β€”not by the filesystem.

  • They determine things like:

    • How directories and files are organized.

    • How free space is tracked.

    • How permissions and metadata are stored.

    • Whether the filesystem journals changes.

    • Whether it supports snapshots, compression, checksums, etc.

  • They are not compatible with each other internallyβ€”an ext4 partition and an NTFS partition organize data completely differently.

ZFS

  • Platform :

    • Linux (OpenZFS)

      • Or OpenZFS ports for other Unix-like systems

    • FreeBSD

    • TrueNAS

  • Strengths :

    • Copy-on-write

    • End-to-end checksums

    • Snapshots

    • Clones

    • Compression

    • Deduplication

    • Integrated RAID management (RAID-Z)

  • Weaknesses :

    • High RAM usage, more complex

      • You need at least 1GB of RAM per 1TB of storage.

  • Common uses :

    • Servers

    • NAS systems

    • Backup storage

  • It's not in the Linux kernel, due to licensing drama.

  • On-disk structure :

    • Organizes storage into copy-on-write trees with checksummed blocks and storage pools.

F2FS (Flash-Friendly File System)

  • Platform :

    • Linux.

  • Strengths :

    • Optimized for flash storage (SSDs/eMMC)

      • It will make your SSD last longer.

      • Reduce write amplification

      • Improve flash lifetime

      • Faster random writes

  • Weaknesses :

    • Fewer advanced features than ZFS

  • Common uses :

    • Android devices

    • Embedded Linux

    • Some desktop Linux installations

  • On-disk structure :

    • Is log-structured for flash devices.

BTRFS (B-tree File System)

  • Is a modern Linux filesystem designed to provide many of the advanced features found in ZFS while remaining integrated with the Linux kernel.

  • Strengths :

    • Copy-on-write (CoW)

    • Snapshots

    • Writable clones

    • Checksums for data and metadata

    • Transparent compression (zstd, lzo, zlib)

    • Subvolumes

    • Online resizing

    • Built-in RAID support

    • Send/receive for efficient incremental backups

  • Weaknesses :

    • RAID 5/6 is still not recommended for production in many cases; more complex than ext4

  • Common uses :

    • Desktop Linux

    • Rolling-release distributions

    • Development machines

    • Systems where snapshots are useful

  • On-disk structure :

    • Stores almost everything in B-trees (balanced trees), which is where its name comes from.

    • The main trees include:

      • Filesystem tree β€” files, directories, and inodes

      • Extent tree β€” tracks which data blocks (extents) are allocated

      • Checksum tree β€” stores checksums for data blocks

      • Chunk tree β€” maps logical filesystem addresses to physical devices

      • Root tree β€” tracks subvolumes and snapshots

      • Device tree β€” information about storage devices

XFS

  • Platform :

    • Linux.

  • Strengths :

    • Excellent for large files and parallel I/O

  • Weaknesses :

    • A XFS partition can never shrink, only grow.

    • Terrible with tiny files.

  • Common uses :

    • Enterprise Linux

    • Media production

    • Databases

  • On-disk structure :

    • Uses B+ trees extensively.

ext4

  • The default Linux filesystem for many distributions.

  • Platform :

    • Linux.

  • Strengths :

    • Journaling

    • Extents

    • Delayed allocation

    • Large files

    • Mature tooling

  • Weaknesses :

    • No snapshots.

    • No compression.

  • On-disk structure :

    • Uses inodes, extents, and block groups.

NTFS

  • Default Windows filesystem.

  • Platform :

    • Windows.

    • Linux, via special driver.

      • Read support has existed for years.

      • Modern kernels include the NTFS3 driver for read/write support.

    • macOS

      • Reads NTFS natively.

      • Writing generally requires third-party software.

  • Strengths :

    • Journaling

    • ACL permissions

    • Compression

    • Encryption (EFS)

    • Sparse files

    • Hard links

  • Weaknesses :

    • It works on linux, but not ideal.

      • Not great on performance.

      • Native Linux write support relies on NTFS3/FUSE implementations

  • On-disk structure :

    • Stores metadata in the Master File Table (MFT).

exFAT

  • Fixes the file size limit from FAT32, but it's not universally supported yet.

  • Created by Microsoft.

  • Platform :

    • Linux

    • Windows

    • macOS

  • Strengths :

    • Excellent compatibility, supports large files

  • Weaknesses :

    • No journaling or permissions

  • Designed for :

    • USB drives

    • SDXC cards

    • External SSDs

  • On-disk structure :

FAT32

  • Platform :

    • Almost everything

  • Strengths :

    • Universal compatibility.

  • Weaknesses :

    • 4 GB max file size, 2 TB practical volume limit

  • Common uses :

    • BIOS/UEFI boot partitions

    • Small USB drives

    • Embedded devices

  • On-disk structure :

    • Stores allocation information in a File Allocation Table.